package com.yang.service;

import com.yang.domain.User;

import java.util.Map;

public interface UserService {
    //注册用户
    boolean registerUser(User user);
    //检查用户名是否存在
    boolean isUsernameExists(String username);
    //检查邮箱是否存在
    boolean isEmailExists(String email);
    //检查手机号是否存在
    boolean isPhoneExists(String phone);
    //根据用户id查询用户
    User selectUserByUserId(Long userId);
    //根据用户名查询用户
    User selectUserByUsername(String username);
    //修改用户信息
    boolean updateUser(User user);
    //用户登入
    User loginUser(String username, String password);
    //重置密码
    boolean resetPassword(String username, String password);
    // 获取用户角色
    String getUserRoleCode(Long userId);
    // 根据权限获取分页用户列表
    Map<String, Object> getUsersByPage(Long currentUserId, String roleCode, int page, int size);
    // 根据权限获取指定用户信息
    User getUserByIdWithPermission(Long targetUserId, Long currentUserId, String roleCode);
    // 根据权限更新用户信息
    boolean updateUserWithPermission(Long targetUserId, User user, Long currentUserId, String roleCode);
    // 根据权限重置密码
    boolean resetPasswordWithPermission(String targetUsername, String newPassword, Long currentUserId, String roleCode);
    // 将用户升级为管理员（超管调用）
    boolean upgradeToAdmin(Long targetUserId, Long currentUserId, String roleCode);
    // 将管理员降级为普通用户（超管调用）
    boolean downgradeToUser(Long targetUserId, Long currentUserId, String roleCode);
}
